#ifndef __FILEDB_H
#define __FILEDB_H

#include <sqlite3.h>

class FileDB {
 protected:
  sqlite3* db;

public:
  FileDB(const char* file);
  virtual ~FileDB();

  int get_dir_id(const char* name, int pathId);
  void add_dir(const char* name, int parentId);
  int get_file_id(int pathId, const char* name, int* contentsId, time_t* mTime);
  void update_contents(int fileId, int oldContentsId, char md5[32], time_t mtime);
  int get_contents_id(size_t size, char md5[33]);
  int get_contents_refs (int id);
  void add_contents(size_t size, char md5[33]);
  void ref_contents(int id);
  void deref_contents(int id);
  void add_file(int pathId, const char* name, size_t size, char md5[33], time_t mtime);
};

#endif // __FILEDB_H
